package com.wzapp.sitposture.common.restful;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;

public class RestfulResult {

    /**
     * 200状态码。OK - [GET]：服务器成功返回用户请求的数据，该操作是幂等的（Idempotent）。
     *
     * @param t
     * @return
     */
    public static ResponseEntity ok(Object t){
        return new ResponseEntity(t, HttpStatus.OK);
    }

    /**
     * 201状态码。CREATED - [POST/PUT/PATCH]：用户新建或修改数据成功。
     *
     * @param t
     * @return
     */
    public static ResponseEntity createSuccess(Object t){
        return new ResponseEntity(t, HttpStatus.CREATED);
    }

    /**
     * 204状态码。NO CONTENT - [DELETE]：用户删除数据成功。
     *
     * @param t
     * @return
     */
    public static ResponseEntity deleteSuccess(Object t){
        return new ResponseEntity(t, HttpStatus.NO_CONTENT);
    }

    /**
     * 304状态码。NO Modified - 文件没有改变。
     *
     * @param t
     * @return
     */
    public static ResponseEntity notModified(Object t){
        return new ResponseEntity(t, HttpStatus.NOT_MODIFIED);
    }

    /**
     * 400状态码。INVALID REQUEST - [POST/PUT/PATCH]：用户发出的请求有错误，服务器没有进行新建或修改数据的操作，该操作是幂等的。
     *
     * @param t
     * @return
     */
    public static ResponseEntity createFail(CustomizedError t){
        return new ResponseEntity(t, HttpStatus.BAD_REQUEST);
    }

    /**
     * 401状态码。Unauthorized - [*]：表示用户没有权限（令牌、用户名、密码错误）。
     *
     * @param t
     * @return
     */
    public static ResponseEntity noToken(CustomizedError t){
        return new ResponseEntity(t, HttpStatus.UNAUTHORIZED);
    }

    /**
     * 403状态码。Forbidden - [*] 表示用户得到授权（与401错误相对），但是访问是被禁止的。
     *
     * @param t
     * @return
     */
    public static ResponseEntity notPermission(CustomizedError t){
        return new ResponseEntity(t, HttpStatus.FORBIDDEN);
    }

    /**
     * 404状态码。NOT FOUND - [*]：用户发出的请求针对的是不存在的记录，服务器没有进行操作，该操作是幂等的。
     *
     * @param t
     * @return
     */
    public static ResponseEntity notFound(CustomizedError t){
        return new ResponseEntity(t, HttpStatus.NOT_FOUND);
    }

    /**
     * 500状态码。INTERNAL SERVER ERROR - [*]：服务器发生错误，用户将无法判断发出的请求是否成功。
     *
     * @param t
     * @return
     */
    public static ResponseEntity serverError(CustomizedError t){
        return new ResponseEntity(t, HttpStatus.INTERNAL_SERVER_ERROR);
    }
}
